<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>trycatch</title>
	</head>
	<body>
		
		<script type="text/javascript">
			/*
			 * Error.name 六种
			 * 1.EvalError:eval()使用与定义不一致
			 * 2.RangeError:数值越界
			 * 3.ReferenceError:非法或不能识别的引用数值
			 * 4.SyntaxError: 发生语法解析错误
			 * 5.TypeError: 操作数类型错误
			 * 6.URIError: URI处理函数使用不当
			 */
			
//es5 标准模式
			
			/*
			 * es5严格模式
			 * "use strict"
			 * 不再兼容es3的一写不规范的语法，使用全新的es5的规范
			 * 两种用法:
			 * 	全局严格模式
			 * 	局部函数内严格模式(推荐)
			 * 
			 * 就是一行字符串，不会对不兼容严格模式的浏览器产生影响。
			 * 
			 * 不支持with arguments callee func caller,变量赋值前必须声明，
			 * 局部this必须被赋值(Person.call(null/undefined)赋值声明就是什么),
			 * 拒绝重复属性和参数
			 */
			
			//基于es3.0的 + es5.0 的新增方法
			//es3.0 和es5.0产生冲突的部分
			
			//es5.0严格模式启动
			/*"use strict";
			function test(){
				console.log(arguments.callee);
			}*/
			
			/*function demo(){
				console.log(arguments.callee);
			}
			
			function test(){
				"use strict"
				console.log(arguments.callee);
			}*/
			
//with   更改作用域链   消耗资源
			/*var obj = {
				name : "obj"
			}
			var name = 'window';
			function test(){
				var name = 'scope';
				with(obj){
					console.log(name)
				}
			}
			test();*/
			
			/*"use strict"
			with(document){
				write('a');
			}*/
//callee   
			/*"use strict"
			function Test(){
				console.log(this);
			}
			Test();//必须声明
			new Test();*/
			
			//重复属性名
			/*'use strict'
			var obj = {
				name : "123",
				name : "234"
			}*/
			
//eval
			
			function foo() {
				age : 10
			}
			var oldName = foo.old;
//			foo.old = "bar";
			var p = new foo();
			p.
			
						
			
			

			
			
			
			
			
			
		</script>
	</body>
</html>

